package com.ts.api.module.channel.entity.vo;

import com.ts.api.module.channel.entity.bo.ChannelProductMatchApplyBO;
import com.ts.api.module.channel.entity.bo.ChannelProductMatchDisplayBO;
import com.ts.api.module.product.entity.po.ProductPlanPO;
import lombok.Data;

/**
 * 返回渠道产品匹配实体
 */
@Data
public class RespChannelProductMatchVO {

    /** 机构名称/投放名称 */
    private String name;
    /** 机构类型 0（本地机构计划) ,1（全国机构计划)，2企微类型 */
    private String type;
    /** login地址 */
    private String logoPath;
    /** 链接(点击跳转链接) */
    private String link;
    /** 授权后跳转链接(用户授权后下游回调页) */
    private String authLink;
    /** 主体id */
    private Long productId;
    /** 只匹配全流程（符合ip屏蔽） */
    private Boolean onlyMatchAll;

    private RespChannelProductMatchVO() {
        super();
    }

    /**
     *  创建
     *
     *  @param  productPlanPO                   计划实体
     *  @param  channelProductMatchDisplayBO    匹配展示信息业务实体
     *  @return RespChannelProductMatchVO
     */
    public static RespChannelProductMatchVO create(ProductPlanPO productPlanPO, ChannelProductMatchDisplayBO channelProductMatchDisplayBO, Boolean onlyMatchAll) {
        RespChannelProductMatchVO respChannelProductMatchVO = new RespChannelProductMatchVO();
        respChannelProductMatchVO.setName(channelProductMatchDisplayBO.getDisplayName());
        respChannelProductMatchVO.setLogoPath(channelProductMatchDisplayBO.getLogoPath());

        respChannelProductMatchVO.setType(productPlanPO.getType());
        respChannelProductMatchVO.setLink(productPlanPO.getLink());
        respChannelProductMatchVO.setProductId(productPlanPO.getLoanProductId());
        respChannelProductMatchVO.setOnlyMatchAll(onlyMatchAll);
        return respChannelProductMatchVO;
    }

    /**
     *  创建下游授权回调链接
     *
     *  @param  productPlanPO                   计划实体
     *  @param  channelProductMatchDisplayBO    匹配展示信息业务实体
     *  @return RespChannelProductMatchVO
     */
    public static RespChannelProductMatchVO createAuthLink(ProductPlanPO productPlanPO, ChannelProductMatchDisplayBO channelProductMatchDisplayBO, Boolean onlyMatchAll) {
        RespChannelProductMatchVO respChannelProductMatchVO = create(productPlanPO, channelProductMatchDisplayBO, onlyMatchAll);
        respChannelProductMatchVO.setAuthLink(channelProductMatchDisplayBO.getCallUrl());
        return respChannelProductMatchVO;
    }

    /**
     *  进件-创建下游授权回调链接
     *
     *  @param  productPlanPO                   计划实体
     *  @param  channelProductMatchDisplayBO    匹配展示信息业务实体
     *  @param  channelProductMatchDisplayBO    进件匹配信息匹配展示信息业务实体
     *  @return RespChannelProductMatchVO
     */
    public static RespChannelProductMatchVO createApplyAuthLink(ProductPlanPO productPlanPO,
                                                                ChannelProductMatchDisplayBO channelProductMatchDisplayBO,
                                                                ChannelProductMatchApplyBO channelProductMatchApplyBO, Boolean onlyMatchAll) {
        RespChannelProductMatchVO respChannelProductMatchVO = create(productPlanPO, channelProductMatchDisplayBO, onlyMatchAll);
        respChannelProductMatchVO.setAuthLink(channelProductMatchApplyBO.getUrl());
        return respChannelProductMatchVO;
    }

}
